From 2dce666805926e7c2dcbfc0e1c02b848eb7eb256 Mon Sep 17 00:00:00 2001 From: Mathieu Malaterre Date: Fri, 12 Jan 2024 10:33:52 +0100 Subject: [PATCH] d/patches: Import bug fix from upstream --- ...70947226783ce3548bf1e5b7112fac70de46.patch | 57 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 58 insertions(+) create mode 100644 debian/patches/da5370947226783ce3548bf1e5b7112fac70de46.patch diff --git a/debian/patches/da5370947226783ce3548bf1e5b7112fac70de46.patch b/debian/patches/da5370947226783ce3548bf1e5b7112fac70de46.patch new file mode 100644 index 00000000..ba84c571 --- /dev/null +++ b/debian/patches/da5370947226783ce3548bf1e5b7112fac70de46.patch @@ -0,0 +1,57 @@ +From da5370947226783ce3548bf1e5b7112fac70de46 Mon Sep 17 00:00:00 2001 +From: Joerg Riesmeier +Date: Wed, 8 Nov 2023 11:38:54 +0100 +Subject: [PATCH] Fixed issue with delimiters being converted. + +Fixed issue with delimiter character "\" being converted when converting +a DICOM dataset that uses a Specific Character Set of "ISO 2022 IR 13\ISO +2022 IR 87" to UTF-8. The delimiter "\" was incorrectly converted to the +Yen sign when processing the value of an "LO" data element that contains +multiple values but does not use any escape sequences. This issues has +been fixed now by always treating the delimiters in a special way. + +Thanks to Mathieu Malaterre for the report +and David Gobbi for the analysis and testing. +--- + dcmdata/libsrc/dcspchrs.cc | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/dcmdata/libsrc/dcspchrs.cc b/dcmdata/libsrc/dcspchrs.cc +index c327a1aa8..69d14a160 100644 +--- a/dcmdata/libsrc/dcspchrs.cc ++++ b/dcmdata/libsrc/dcspchrs.cc +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2011-2022, OFFIS e.V. ++ * Copyright (C) 2011-2023, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by +@@ -548,8 +548,9 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString, + const OFString &delimiters) + { + OFCondition status = EC_Normal; +- // check whether there are any code extensions at all +- if (EncodingConverters.empty() || !checkForEscapeCharacter(fromString, fromLength)) ++ // check whether there are or could be any code extensions ++ const OFBool hasEscapeChar = checkForEscapeCharacter(fromString, fromLength); ++ if (EncodingConverters.empty() || (!hasEscapeChar && delimiters.empty())) + { + DCMDATA_DEBUG("DcmSpecificCharacterSet: Converting '" + << convertToLengthLimitedOctalString(fromString, fromLength) << "'"); +@@ -564,10 +565,11 @@ OFCondition DcmSpecificCharacterSet::convertString(const char *fromString, + } else { + DCMDATA_DEBUG("DcmSpecificCharacterSet: Converting '" + << convertToLengthLimitedOctalString(fromString, fromLength) +- << "' (with code extensions and delimiters '" << delimiters << "')"); ++ << "' (with " << (hasEscapeChar ? "code extensions and " : "") ++ << "delimiters '" << delimiters << "')"); + } +- // code extensions according to ISO 2022 used, so we need to check for +- // particular escape sequences in order to switch between character sets ++ // code extensions according to ISO 2022 (possibly) used, so we need to check ++ // for particular escape sequences in order to switch between character sets + toString.clear(); + size_t pos = 0; + // some (extended) character sets use more than 1 byte per character diff --git a/debian/patches/series b/debian/patches/series index fdcb9055..ed411ca1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -10,3 +10,4 @@ #1c8cca4bf6f7c92fc16f9e66faf49409c891a2b0.patch #f06a867513524664a1b03dfcf812d8b60fdd02cc.patch remove_version.patch +da5370947226783ce3548bf1e5b7112fac70de46.patch -- 2.30.2